package org.forever.util
{
	/**
	* （有向）图的边结构接口
	*	无向图也可以看成是有向图，为此，只需将每条无向边替换为对称的一对有向边
	*/
	public interface Edge
	{
		/**未知边*/
		public static const UNKNOWN:int = 0;
		/**树边*/
		public static const TREE:int = 1;
		/**横跨边*/
		public static const CROSS:int = 2;
		/**前向跨边*/
		public static const FORWARD:int = 3;
		/**后向跨边*/
		public static const BACKWARD:int = 4;
		
		/**返回当前边的信息（对于带权图，也就是各边的权重）*/
		 function getInfo():Object;
		/**将当前边的信息更新为x，并返回原先的信息*/
		 function setInfo(x:Object):Object;
		
		/**取当前边在所属的图的边集E中的位置*/
		 function getEPosInE():Position;
		/**取v[i]在顶点集V中的位置（i=0或1，分别对应于起点、终点）*/
		 function getVPosInV(i:int):Position;
		/**当前边在其两个端点的关联边集I(v[i])中的位置*/
		 function getEPosInI(i:int):Position;
		/**读取边的类别（针对遍历）*/
		 function getType():int;
		 /**设置边的类别（针对遍历）*/
		 function setType(t:int):int;

	}
}